home *** CD-ROM | disk | FTP | other *** search
/ STraTOS 1997 April & May / STraTOS 1 - 1997 April & May.iso / CD01 / MAGAZINE / @FALCON / FALK'MAG / SOURCE.COD / POINT / POINTTC.S < prev   
Encoding:
Text File  |  1995-06-20  |  2.5 KB  |  97 lines

  1. * Routine de point en True Color (640*400)
  2.  
  3.      section TEXT
  4. * demande de résolution
  5.      move.w #-1,-(sp)
  6.      move.w #$58,-(sp)        * Vsetmode
  7.      trap #14
  8.      adda.l #4,sp
  9.      move.w d0,ancien_mode
  10. * adresse physique
  11.      move.w #2,-(sp)          * Physbase
  12.      trap #14
  13.      adda.l #2,sp 
  14.      move.l d0,ancien_phys
  15. * adresse logique
  16.      move.w #3,-(sp)          * Logbase
  17.      trap #14
  18.      adda.l #2,sp
  19.      move.l d0,ancien_log
  20.  
  21. * Mise en place de la nouvelle résolution
  22. * calcul de l'adresse écran (qui doit être un mutiple de 4)
  23.      move.l #ecran+4,d0
  24.      andi.b #$FC,d0           * il  suffit d'annuler les 2  bits  de  poid 
  25.                               * faible
  26.      move.l d0,adr_ecran      * on stocke l'adresse écran
  27.      move.w #%0000000100101100,-(sp) * entrelacé/80 colonnes/65536 couleurs
  28.                                      * TV/PAL/pas d'overscan
  29.      move.w #3,-(sp)
  30.      move.l d0,-(sp)          * écran physique = écran logique
  31.      move.l d0,-(sp)
  32.      move.w #5,-(sp)          * Setscreen
  33.      trap #14
  34.      adda.l #14,sp
  35.  
  36.      move.w #100,d3
  37.      move.w #50,d4
  38.      move.w #100,d5
  39. * appel de la routine de point
  40. * D0 : X
  41. * D1 : Y
  42. * D2 : couleur
  43. affiche_pts
  44.      move.w d3,d0
  45.      move.w d4,d1
  46.      move.w #%0011000011000110,d2   
  47.      bsr point           * affiche le point de coordonnées (D3, D4)
  48.      addq.w #1,d3        * passage au point (D3+1, D4+1)
  49.      addq.w #1,d4        * ce qui nous trace une diagonale!!
  50.      dbra d5,affiche_pts    
  51.  
  52. * fin du programme
  53. * attente de touche
  54.      move.w #7,-(sp)
  55.      trap #1             * Fonction C_Rawcin du gemdos
  56.      adda.w #2,sp        * Attenet d'une touche
  57.      
  58. * remise en place de la résolution
  59.      move.w ancien_mode,-(sp)
  60.      move.w #3,-(sp)
  61.      move.l ancien_phys,-(sp)
  62.      move.l ancien_log,-(sp)
  63.      move.w #5,-(sp)
  64.      trap #14
  65.      adda.l #14,sp
  66.  
  67. * retour système
  68.      move.w #0,-(sp)
  69.      trap #1
  70.  
  71. * routine de point en 65536 couleurs, 640 points de large
  72. point
  73. * recoit en D0 : X, D1 : Y, D2 : couleur
  74. * modifie D0, D1, A0
  75. * calcul de l'adresse de la ligne
  76.      movea.l adr_ecran,a0
  77.      mulu.w #1280,d1     * résultat sur un mot long !!
  78.      adda.l d1,a0
  79. * calcul de l'adresse du mot à modifier
  80.      lsl.w #1,d0         * multiplication par 2
  81.      adda.w d0,a0
  82. * affichage du point
  83.      move.w d2,(a0)
  84.      rts
  85.  
  86.      section BSS
  87.      EVEN
  88. * variable
  89. * initialisation
  90. ancien_mode    ds.w 1   
  91. ancien_phys    ds.l 1
  92. ancien_log     ds.l 1
  93. adr_ecran      ds.l 1
  94. ecran          ds.b 640*2*400+4
  95.  
  96.  
  97.